From: Ray Strode Date: Wed, 26 Oct 2016 14:46:21 +0000 (-0400) Subject: popupMenu: don't handle key presses directly if there are modifiers X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~652 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e33c68a415;p=gnome-shell.git popupMenu: don't handle key presses directly if there are modifiers commit 1d58ea25ab6f0472bdeffc9170ece37d5dd71e64 changed the popupMenu code to handle key presses on source actors directly. This fixed keynav into the session gear menu at the login screen. Unfortunately, it also causes spurious pop ups if a modifier happens to be held down. This commit checks for modifiers and short circuits the up front key handling if any are found. https://bugzilla.gnome.org/show_bug.cgi?id=740043 --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 0090aa3b2..52a58d6b8 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -783,6 +783,16 @@ const PopupMenu = new Lang.Class({ break; } + let state = event.get_state(); + + // if user has a modifier down (except capslock) + // then don't handle the key press here + state &= ~Clutter.ModifierType.LOCK_MASK; + state &= Clutter.ModifierType.MODIFIER_MASK; + + if (state) + return Clutter.EVENT_PROPAGATE; + let symbol = event.get_key_symbol(); if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) { this.toggle();